<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>Test Report</title>
    <link href="assets/style.css" rel="stylesheet" type="text/css"/></head>
  <body onLoad="init()">
    <script>/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


function toArray(iter) {
    if (iter === null) {
        return null;
    }
    return Array.prototype.slice.call(iter);
}

function find(selector, elem) { // eslint-disable-line no-redeclare
    if (!elem) {
        elem = document;
    }
    return elem.querySelector(selector);
}

function findAll(selector, elem) {
    if (!elem) {
        elem = document;
    }
    return toArray(elem.querySelectorAll(selector));
}

function sortColumn(elem) {
    toggleSortStates(elem);
    const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
    let key;
    if (elem.classList.contains('result')) {
        key = keyResult;
    } else if (elem.classList.contains('links')) {
        key = keyLink;
    } else {
        key = keyAlpha;
    }
    sortTable(elem, key(colIndex));
}

function showAllExtras() { // eslint-disable-line no-unused-vars
    findAll('.col-result').forEach(showExtras);
}

function hideAllExtras() { // eslint-disable-line no-unused-vars
    findAll('.col-result').forEach(hideExtras);
}

function showExtras(colresultElem) {
    const extras = colresultElem.parentNode.nextElementSibling;
    const expandcollapse = colresultElem.firstElementChild;
    extras.classList.remove('collapsed');
    expandcollapse.classList.remove('expander');
    expandcollapse.classList.add('collapser');
}

function hideExtras(colresultElem) {
    const extras = colresultElem.parentNode.nextElementSibling;
    const expandcollapse = colresultElem.firstElementChild;
    extras.classList.add('collapsed');
    expandcollapse.classList.remove('collapser');
    expandcollapse.classList.add('expander');
}

function showFilters() {
    const filterItems = document.getElementsByClassName('filter');
    for (let i = 0; i < filterItems.length; i++)
        filterItems[i].hidden = false;
}

function addCollapse() {
    // Add links for show/hide all
    const resulttable = find('table#results-table');
    const showhideall = document.createElement('p');
    showhideall.innerHTML = '<a href="javascript:showAllExtras()">Show all details</a> / ' +
                            '<a href="javascript:hideAllExtras()">Hide all details</a>';
    resulttable.parentElement.insertBefore(showhideall, resulttable);

    // Add show/hide link to each result
    findAll('.col-result').forEach(function(elem) {
        const collapsed = getQueryParameter('collapsed') || 'Passed';
        const extras = elem.parentNode.nextElementSibling;
        const expandcollapse = document.createElement('span');
        if (extras.classList.contains('collapsed')) {
            expandcollapse.classList.add('expander');
        } else if (collapsed.includes(elem.innerHTML)) {
            extras.classList.add('collapsed');
            expandcollapse.classList.add('expander');
        } else {
            expandcollapse.classList.add('collapser');
        }
        elem.appendChild(expandcollapse);

        elem.addEventListener('click', function(event) {
            if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) {
                showExtras(event.currentTarget);
            } else {
                hideExtras(event.currentTarget);
            }
        });
    });
}

function getQueryParameter(name) {
    const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

function init () { // eslint-disable-line no-unused-vars
    resetSortHeaders();

    addCollapse();

    showFilters();

    sortColumn(find('.initial-sort'));

    findAll('.sortable').forEach(function(elem) {
        elem.addEventListener('click',
            function() {
                sortColumn(elem);
            }, false);
    });
}

function sortTable(clicked, keyFunc) {
    const rows = findAll('.results-table-row');
    const reversed = !clicked.classList.contains('asc');
    const sortedRows = sort(rows, keyFunc, reversed);
    /* Whole table is removed here because browsers acts much slower
     * when appending existing elements.
     */
    const thead = document.getElementById('results-table-head');
    document.getElementById('results-table').remove();
    const parent = document.createElement('table');
    parent.id = 'results-table';
    parent.appendChild(thead);
    sortedRows.forEach(function(elem) {
        parent.appendChild(elem);
    });
    document.getElementsByTagName('BODY')[0].appendChild(parent);
}

function sort(items, keyFunc, reversed) {
    const sortArray = items.map(function(item, i) {
        return [keyFunc(item), i];
    });

    sortArray.sort(function(a, b) {
        const keyA = a[0];
        const keyB = b[0];

        if (keyA == keyB) return 0;

        if (reversed) {
            return keyA < keyB ? 1 : -1;
        } else {
            return keyA > keyB ? 1 : -1;
        }
    });

    return sortArray.map(function(item) {
        const index = item[1];
        return items[index];
    });
}

function keyAlpha(colIndex) {
    return function(elem) {
        return elem.childNodes[1].childNodes[colIndex].firstChild.data.toLowerCase();
    };
}

function keyLink(colIndex) {
    return function(elem) {
        const dataCell = elem.childNodes[1].childNodes[colIndex].firstChild;
        return dataCell == null ? '' : dataCell.innerText.toLowerCase();
    };
}

function keyResult(colIndex) {
    return function(elem) {
        const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
            'Skipped', 'Passed'];
        return strings.indexOf(elem.childNodes[1].childNodes[colIndex].firstChild.data);
    };
}

function resetSortHeaders() {
    findAll('.sort-icon').forEach(function(elem) {
        elem.parentNode.removeChild(elem);
    });
    findAll('.sortable').forEach(function(elem) {
        const icon = document.createElement('div');
        icon.className = 'sort-icon';
        icon.textContent = 'vvv';
        elem.insertBefore(icon, elem.firstChild);
        elem.classList.remove('desc', 'active');
        elem.classList.add('asc', 'inactive');
    });
}

function toggleSortStates(elem) {
    //if active, toggle between asc and desc
    if (elem.classList.contains('active')) {
        elem.classList.toggle('asc');
        elem.classList.toggle('desc');
    }

    //if inactive, reset all other functions and add ascending active
    if (elem.classList.contains('inactive')) {
        resetSortHeaders();
        elem.classList.remove('inactive');
        elem.classList.add('active');
    }
}

function isAllRowsHidden(value) {
    return value.hidden == false;
}

function filterTable(elem) { // eslint-disable-line no-unused-vars
    const outcomeAtt = 'data-test-result';
    const outcome = elem.getAttribute(outcomeAtt);
    const classOutcome = outcome + ' results-table-row';
    const outcomeRows = document.getElementsByClassName(classOutcome);

    for(let i = 0; i < outcomeRows.length; i++){
        outcomeRows[i].hidden = !elem.checked;
    }

    const rows = findAll('.results-table-row').filter(isAllRowsHidden);
    const allRowsHidden = rows.length == 0 ? true : false;
    const notFoundMessage = document.getElementById('not-found-message');
    notFoundMessage.hidden = !allRowsHidden;
}
</script>
    <h1>gaodetestReport.html</h1>
    <p>Report generated on 22-Nov-2021 at 08:31:14 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.1.1</p>
    <h2>Environment</h2>
    <table id="environment">
      <tr>
        <td>JAVA_HOME</td>
        <td>E:\jdk</td></tr>
      <tr>
        <td>Packages</td>
        <td>{"pluggy": "1.0.0", "py": "1.11.0", "pytest": "6.2.5"}</td></tr>
      <tr>
        <td>Platform</td>
        <td>Windows-10-10.0.19042-SP0</td></tr>
      <tr>
        <td>Plugins</td>
        <td>{"allure-pytest": "2.9.45", "forked": "1.3.0", "html": "3.1.1", "metadata": "1.11.0", "ordering": "0.6", "sugar": "0.9.4", "xdist": "2.4.0"}</td></tr>
      <tr>
        <td>Python</td>
        <td>3.9.5</td></tr></table>
    <h2>Summary</h2>
    <p>166 tests ran in 184.05 seconds. </p>
    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">46 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">11 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">107 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">2 unexpected passes</span>
    <h2>Results</h2>
    <table id="results-table">
      <thead id="results-table-head">
        <tr>
          <th class="sortable result initial-sort" col="result">Result</th>
          <th class="sortable" col="name">Test</th>
          <th class="sortable" col="duration">Duration</th>
          <th class="sortable links" col="links">Links</th></tr>
        <tr hidden="true" id="not-found-message">
          <th colspan="4">No results found. Try to check the filters</th></tr></thead>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[1-true-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A253FDC6A0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;true&#x27;, count = 1<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A253FDC6A0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A25148E1C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[1-true-兰州市-兰州西站]</td>
          <td class="col-duration">0.11</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254952370&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;ci...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;兰州西站&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;true&#x27;, count = 1<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254952370&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952C70&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[1-false-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C6C7F0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;false&#x27;, count = 1<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C6C7F0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2549534C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[1-false-兰州市-兰州西站]</td>
          <td class="col-duration">0.12</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254A6AF70&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;ci...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;兰州西站&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;false&#x27;, count = 1<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254A6AF70&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254A6AE50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[5-true-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.19</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919820&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...7%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...7%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学&#x27;, city = &#x27;兰州市&#x27;<br/>batch = &#x27;true&#x27;, count = 5<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919820&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254919F40&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[5-true-兰州市-兰州西站]</td>
          <td class="col-duration">0.12</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2549F2910&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;兰州西站|兰州西站|兰州西站|兰州西站|兰州西站&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;true&#x27;, count = 5<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2549F2910&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254C6BBB0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[5-false-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.12</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254054790&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学&#x27;, city = &#x27;兰州市&#x27;<br/>batch = &#x27;false&#x27;, count = 5<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254054790&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2540544C0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[5-false-兰州市-兰州西站]</td>
          <td class="col-duration">0.13</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919310&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11004] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;兰州西站|兰州西站|兰州西站|兰州西站|兰州西站&#x27;, city = &#x27;兰州市&#x27;, batch = &#x27;false&#x27;, count = 5<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919310&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2549196D0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11004] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[10-true-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.11</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2548A60D0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...7%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...7%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11004] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学&#x27;<br/>city = &#x27;兰州市&#x27;, batch = &#x27;true&#x27;, count = 10<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2548A60D0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2548A6610&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11004] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[10-true-兰州市-兰州西站]</td>
          <td class="col-duration">0.11</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C56550&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%...|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=true&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%85%B0%E5%B7%9E%E8%A5%BF%E7%AB%99|%E...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11004] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;兰州西站|兰州西站|兰州西站|兰州西站|兰州西站|兰州西站|兰州西站|兰州西站|兰州西站|兰州西站&#x27;, city = &#x27;兰州市&#x27;<br/>batch = &#x27;true&#x27;, count = 10<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C56550&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254BD0430&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11004] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[10-false-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.13</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C34B20&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9...%E5%AD%A6|%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5%B7%9E%E5%A4%A7%E5%AD%A6&amp;city=%E5%85%B0%E5%B7%9E%E5%B8%82&amp;batch=false&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=%E5%9F%8E%E5%85%B3%E5%8C%BA%E5%85%B0%E5...1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11004] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学|城关区兰州大学&#x27;<br/>city = &#x27;兰州市&#x27;, batch = &#x27;false&#x27;, count = 10<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;城关区兰州大学&quot;, &quot;兰州西站&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;])<br/>    @pytest.mark.parametrize(&#x27;batch&#x27;, [&quot;true&quot;, &quot;false&quot;])<br/>    @pytest.mark.parametrize(&#x27;count&#x27;, [1, 5, 10, 11])<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_batch_geocode(address, city, batch, count):<br/>        &quot;&quot;&quot;<br/>        批量查询测试--正例反例<br/>        :param address:<br/>        :param city:<br/>        :param batch:<br/>        :param count:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>    <br/>        address = (address + &quot;|&quot;) * (count - 1) + address<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=%s&amp;output=JSON&amp;address=%s&amp;city=%s&amp;batch=%s&quot; % (key, address, city, batch)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:98: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254C34B20&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254C34BB0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11004] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[-https://restapi.amap.com/v3/geocode/geo?]</td>
          <td class="col-duration">1.34</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/geo?&#x27;, key = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[-https://restapi.amap.com/v3/geocode/regeo?]</td>
          <td class="col-duration">3.64</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/regeo?&#x27;, key = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[-https://restapi.amap.com/v5/ip?]</td>
          <td class="col-duration">8.37</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v5/ip?&#x27;, key = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[-https://restapi.amap.com/v3/ip?]</td>
          <td class="col-duration">4.15</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/ip?&#x27;, key = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[-https://restapi.amap.com/v3/weather/weatherInfo?]</td>
          <td class="col-duration">8.89</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/weather/weatherInfo?&#x27;, key = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[1-https://restapi.amap.com/v3/geocode/geo?]</td>
          <td class="col-duration">24.30</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254046610&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/v3/geocode/geo?key=1&amp;output=JSON&#x27;, body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/v3/geocode/geo?key=1&amp;output=JSON&#x27;, body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=1&amp;output=JSON HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>        super().connect()<br/>    <br/>        if self._tunnel_host:<br/>            server_hostname = self._tunnel_host<br/>        else:<br/>            server_hostname = self.host<br/>    <br/>&gt;       self.sock = self._context.wrap_socket(self.sock,<br/>                                              server_hostname=server_hostname)<br/><br/>C:\Python39\lib\http\client.py:1422: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLContext object at 0x000001A254023C40&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;, session = None<br/><br/>    def wrap_socket(self, sock, server_side=False,<br/>                    do_handshake_on_connect=True,<br/>                    suppress_ragged_eofs=True,<br/>                    server_hostname=None, session=None):<br/>        # SSLSocket class handles server_hostname encoding before it calls<br/>        # ctx._wrap_socket()<br/>&gt;       return self.sslsocket_class._create(<br/>            sock=sock,<br/>            server_side=server_side,<br/>            do_handshake_on_connect=do_handshake_on_connect,<br/>            suppress_ragged_eofs=suppress_ragged_eofs,<br/>            server_hostname=server_hostname,<br/>            context=self,<br/>            session=session<br/>        )<br/><br/>C:\Python39\lib\ssl.py:500: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>cls = &lt;class &#x27;ssl.SSLSocket&#x27;&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;<br/>context = &lt;ssl.SSLContext object at 0x000001A254023C40&gt;, session = None<br/><br/>    @classmethod<br/>    def _create(cls, sock, server_side=False, do_handshake_on_connect=True,<br/>                suppress_ragged_eofs=True, server_hostname=None,<br/>                context=None, session=None):<br/>        if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM:<br/>            raise NotImplementedError(&quot;only stream sockets are supported&quot;)<br/>        if server_side:<br/>            if server_hostname:<br/>                raise ValueError(&quot;server_hostname can only be specified &quot;<br/>                                 &quot;in client mode&quot;)<br/>            if session is not None:<br/>                raise ValueError(&quot;session can only be specified in &quot;<br/>                                 &quot;client mode&quot;)<br/>        if context.check_hostname and not server_hostname:<br/>            raise ValueError(&quot;check_hostname requires server_hostname&quot;)<br/>    <br/>        kwargs = dict(<br/>            family=sock.family, type=sock.type, proto=sock.proto,<br/>            fileno=sock.fileno()<br/>        )<br/>        self = cls.__new__(cls, **kwargs)<br/>        super(SSLSocket, self).__init__(**kwargs)<br/>        self.settimeout(sock.gettimeout())<br/>        sock.detach()<br/>    <br/>        self._context = context<br/>        self._session = session<br/>        self._closed = False<br/>        self._sslobj = None<br/>        self.server_side = server_side<br/>        self.server_hostname = context._encode_hostname(server_hostname)<br/>        self.do_handshake_on_connect = do_handshake_on_connect<br/>        self.suppress_ragged_eofs = suppress_ragged_eofs<br/>    <br/>        # See if we are connected<br/>        try:<br/>            self.getpeername()<br/>        except OSError as e:<br/>            if e.errno != errno.ENOTCONN:<br/>                raise<br/>            connected = False<br/>        else:<br/>            connected = True<br/>    <br/>        self._connected = connected<br/>        if connected:<br/>            # create the SSL object<br/>            try:<br/>                self._sslobj = self._context._wrap_socket(<br/>                    self, server_side, self.server_hostname,<br/>                    owner=self, session=self._session,<br/>                )<br/>                if do_handshake_on_connect:<br/>                    timeout = self.gettimeout()<br/>                    if timeout == 0.0:<br/>                        # non-blocking<br/>                        raise ValueError(&quot;do_handshake_on_connect should not be specified for non-blocking sockets&quot;)<br/>&gt;                   self.do_handshake()<br/><br/>C:\Python39\lib\ssl.py:1040: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>block = False<br/><br/>    @_sslcopydoc<br/>    def do_handshake(self, block=False):<br/>        self._check_connected()<br/>        timeout = self.gettimeout()<br/>        try:<br/>            if timeout == 0.0 and block:<br/>                self.settimeout(None)<br/>&gt;           self._sslobj.do_handshake()<br/><span class="error">E           ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。</span><br/><br/>C:\Python39\lib\ssl.py:1309: ConnectionResetError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>url = &#x27;https://restapi.amap.com/v3/geocode/geo?&#x27;, key = &#x27;1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_DevKey.py:52: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254046610&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254046BE0&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[1-https://restapi.amap.com/v3/geocode/regeo?]</td>
          <td class="col-duration">18.00</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/regeo?&#x27;, key = &#x27;1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[1-https://restapi.amap.com/v5/ip?]</td>
          <td class="col-duration">0.84</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v5/ip?&#x27;, key = &#x27;1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[1-https://restapi.amap.com/v3/ip?]</td>
          <td class="col-duration">9.18</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/ip?&#x27;, key = &#x27;1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[1-https://restapi.amap.com/v3/weather/weatherInfo?]</td>
          <td class="col-duration">3.31</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2548E1760&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/v3/weather/weatherInfo?key=1&amp;output=JSON&#x27;, body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/>method = &#x27;GET&#x27;, url = &#x27;/v3/weather/weatherInfo?key=1&amp;output=JSON&#x27;, body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/>data = b&#x27;GET /v3/weather/weatherInfo?key=1&amp;output=JSON HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>        super().connect()<br/>    <br/>        if self._tunnel_host:<br/>            server_hostname = self._tunnel_host<br/>        else:<br/>            server_hostname = self.host<br/>    <br/>&gt;       self.sock = self._context.wrap_socket(self.sock,<br/>                                              server_hostname=server_hostname)<br/><br/>C:\Python39\lib\http\client.py:1422: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLContext object at 0x000001A2548D1B40&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;, session = None<br/><br/>    def wrap_socket(self, sock, server_side=False,<br/>                    do_handshake_on_connect=True,<br/>                    suppress_ragged_eofs=True,<br/>                    server_hostname=None, session=None):<br/>        # SSLSocket class handles server_hostname encoding before it calls<br/>        # ctx._wrap_socket()<br/>&gt;       return self.sslsocket_class._create(<br/>            sock=sock,<br/>            server_side=server_side,<br/>            do_handshake_on_connect=do_handshake_on_connect,<br/>            suppress_ragged_eofs=suppress_ragged_eofs,<br/>            server_hostname=server_hostname,<br/>            context=self,<br/>            session=session<br/>        )<br/><br/>C:\Python39\lib\ssl.py:500: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>cls = &lt;class &#x27;ssl.SSLSocket&#x27;&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;<br/>context = &lt;ssl.SSLContext object at 0x000001A2548D1B40&gt;, session = None<br/><br/>    @classmethod<br/>    def _create(cls, sock, server_side=False, do_handshake_on_connect=True,<br/>                suppress_ragged_eofs=True, server_hostname=None,<br/>                context=None, session=None):<br/>        if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM:<br/>            raise NotImplementedError(&quot;only stream sockets are supported&quot;)<br/>        if server_side:<br/>            if server_hostname:<br/>                raise ValueError(&quot;server_hostname can only be specified &quot;<br/>                                 &quot;in client mode&quot;)<br/>            if session is not None:<br/>                raise ValueError(&quot;session can only be specified in &quot;<br/>                                 &quot;client mode&quot;)<br/>        if context.check_hostname and not server_hostname:<br/>            raise ValueError(&quot;check_hostname requires server_hostname&quot;)<br/>    <br/>        kwargs = dict(<br/>            family=sock.family, type=sock.type, proto=sock.proto,<br/>            fileno=sock.fileno()<br/>        )<br/>        self = cls.__new__(cls, **kwargs)<br/>        super(SSLSocket, self).__init__(**kwargs)<br/>        self.settimeout(sock.gettimeout())<br/>        sock.detach()<br/>    <br/>        self._context = context<br/>        self._session = session<br/>        self._closed = False<br/>        self._sslobj = None<br/>        self.server_side = server_side<br/>        self.server_hostname = context._encode_hostname(server_hostname)<br/>        self.do_handshake_on_connect = do_handshake_on_connect<br/>        self.suppress_ragged_eofs = suppress_ragged_eofs<br/>    <br/>        # See if we are connected<br/>        try:<br/>            self.getpeername()<br/>        except OSError as e:<br/>            if e.errno != errno.ENOTCONN:<br/>                raise<br/>            connected = False<br/>        else:<br/>            connected = True<br/>    <br/>        self._connected = connected<br/>        if connected:<br/>            # create the SSL object<br/>            try:<br/>                self._sslobj = self._context._wrap_socket(<br/>                    self, server_side, self.server_hostname,<br/>                    owner=self, session=self._session,<br/>                )<br/>                if do_handshake_on_connect:<br/>                    timeout = self.gettimeout()<br/>                    if timeout == 0.0:<br/>                        # non-blocking<br/>                        raise ValueError(&quot;do_handshake_on_connect should not be specified for non-blocking sockets&quot;)<br/>&gt;                   self.do_handshake()<br/><br/>C:\Python39\lib\ssl.py:1040: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>block = False<br/><br/>    @_sslcopydoc<br/>    def do_handshake(self, block=False):<br/>        self._check_connected()<br/>        timeout = self.gettimeout()<br/>        try:<br/>            if timeout == 0.0 and block:<br/>                self.settimeout(None)<br/>&gt;           self._sslobj.do_handshake()<br/><span class="error">E           ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。</span><br/><br/>C:\Python39\lib\ssl.py:1309: ConnectionAbortedError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>url = &#x27;https://restapi.amap.com/v3/weather/weatherInfo?&#x27;, key = &#x27;1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_DevKey.py:52: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2548E1760&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A2548E1670&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [WinError 10053] 你的主机中的软件中止了一个已建立的连接。&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[@#%&amp;-https://restapi.amap.com/v3/geocode/geo?]</td>
          <td class="col-duration">0.90</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/geo?&#x27;, key = &#x27;@#%&amp;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[@#%&amp;-https://restapi.amap.com/v3/geocode/regeo?]</td>
          <td class="col-duration">0.83</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/regeo?&#x27;, key = &#x27;@#%&amp;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[@#%&amp;-https://restapi.amap.com/v5/ip?]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v5/ip?&#x27;, key = &#x27;@#%&amp;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[@#%&amp;-https://restapi.amap.com/v3/ip?]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/ip?&#x27;, key = &#x27;@#%&amp;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[@#%&amp;-https://restapi.amap.com/v3/weather/weatherInfo?]</td>
          <td class="col-duration">0.54</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/weather/weatherInfo?&#x27;, key = &#x27;@#%&amp;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[shdwhhoihp-https://restapi.amap.com/v3/geocode/geo?]</td>
          <td class="col-duration">0.49</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/geo?&#x27;, key = &#x27;shdwhhoihp&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[shdwhhoihp-https://restapi.amap.com/v3/geocode/regeo?]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/geocode/regeo?&#x27;, key = &#x27;shdwhhoihp&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[shdwhhoihp-https://restapi.amap.com/v5/ip?]</td>
          <td class="col-duration">0.54</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v5/ip?&#x27;, key = &#x27;shdwhhoihp&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[shdwhhoihp-https://restapi.amap.com/v3/ip?]</td>
          <td class="col-duration">0.53</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/ip?&#x27;, key = &#x27;shdwhhoihp&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_DevKey.py::test_err_key[shdwhhoihp-https://restapi.amap.com/v3/weather/weatherInfo?]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">url = &#x27;https://restapi.amap.com/v3/weather/weatherInfo?&#x27;, key = &#x27;shdwhhoihp&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;url&quot;,[&quot;https://restapi.amap.com/v3/geocode/geo?&quot;,<br/>          &quot;https://restapi.amap.com/v3/geocode/regeo?&quot;,<br/>          &quot;https://restapi.amap.com/v5/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/ip?&quot;,<br/>          &quot;https://restapi.amap.com/v3/weather/weatherInfo?&quot;])<br/>    @pytest.mark.parametrize(&#x27;key&#x27;,[&quot;&quot;,&quot;1&quot;,&quot;@#%&amp;&quot;,&quot;shdwhhoihp&quot;])<br/>    @pytest.mark.run(ord=0)<br/>    @pytest.mark.xfail<br/>    @pytest.mark.devkey<br/>    def test_err_key(url,key):<br/>        &quot;&quot;&quot;<br/>        本方法用来测试高德Web服务用户标识(Key)的校验测试<br/>        反向测试用例<br/>        :param url: 所有可能使用到的url<br/>        :param key: 错误的开发者key<br/>        :return: none<br/>        &quot;&quot;&quot;<br/>        req = request.Request(url + &quot;key=&quot; + key + &quot;&amp;output=&quot; + &quot;JSON&quot;)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>&gt;       assert data[&quot;status&quot;]==&#x27;0&#x27; and data[&quot;info&quot;]!=&quot;INVALID_USER_KEY&quot;,data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_USER_KEY&#x27;, &#x27;infocode&#x27;: &#x27;10001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;0&#x27;</span><br/><span class="error">E           0 and &#x27;INVALID_USER_KEY&#x27; != &#x27;INVALID_USER_KEY&#x27;)</span><br/><br/>case\test_DevKey.py:54: AssertionError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[,39.990464]</td>
          <td class="col-duration">0.52</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;,39.990464&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;,39.990464&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[103.841032,]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;103.841032,&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;103.841032,&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[103.841032,-1]</td>
          <td class="col-duration">0.99</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;103.841032,-1&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;103.841032,-1&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[-1,39.990464]</td>
          <td class="col-duration">1.31</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;-1,39.990464&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;-1,39.990464&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[116*34]</td>
          <td class="col-duration">2.79</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;116*34&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;116*34&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[,]</td>
          <td class="col-duration">0.66</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;,&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;,&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_Regeo.py::test_err_rego[]</td>
          <td class="col-duration">0.59</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">location = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;location&#x27;, [&quot;,39.990464&quot;,&quot;103.841032,&quot;,&quot;103.841032,-1&quot;,&quot;-1,39.990464&quot;,&quot;116*34&quot;,&quot;,&quot;,&quot;&quot;])<br/>    @pytest.mark.regeo<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.xfail<br/>    def test_err_rego(location):<br/>        &quot;&quot;&quot;<br/>        测试高德的逆地理编码接口--正向测试用例<br/>        :param location:经纬度信息<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Regeo&quot;]+&quot;key=%s&amp;location=%s&amp;output=JSON&quot;%(key,location)<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and len(data[&quot;regeocode&quot;][&quot;formatted_address&quot;])!=0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;addressComponent&#x27;: {&#x27;adcode&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;country&#x27;: [], ...}, &#x27;aois&#x27;: [], &#x27;formatted_address&#x27;: [], &#x27;pois&#x27;: [], ...}, &#x27;status&#x27;: &#x27;1&#x27;}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 != 0)</span><br/><span class="error">E        +  where 0 = len([])</span><br/><br/>case\test_Regeo.py:57: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;regeocode&#x27;: {&#x27;formatted_address&#x27;: [], &#x27;addressComponent&#x27;: {&#x27;country&#x27;: [], &#x27;province&#x27;: [], &#x27;city&#x27;: [], &#x27;citycode&#x27;: [], &#x27;district&#x27;: [], &#x27;adcode&#x27;: [], &#x27;township&#x27;: [], &#x27;towncode&#x27;: [], &#x27;streetNumber&#x27;: {&#x27;street&#x27;: [], &#x27;number&#x27;: [], &#x27;location&#x27;: &#x27;&#x27;, &#x27;direction&#x27;: [], &#x27;distance&#x27;: []}}, &#x27;pois&#x27;: [], &#x27;roads&#x27;: [], &#x27;roadinters&#x27;: [], &#x27;aois&#x27;: []}}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[兰州市-]</td>
          <td class="col-duration">0.43</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;&#x27;, city = &#x27;兰州市&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[兰州市-aaaa]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;aaaa&#x27;, city = &#x27;兰州市&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: [], &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[兰州市-@]</td>
          <td class="col-duration">0.59</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;@&#x27;, city = &#x27;兰州市&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: [], &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[lz-]</td>
          <td class="col-duration">0.38</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;&#x27;, city = &#x27;lz&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[lz-aaaa]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;aaaa&#x27;, city = &#x27;lz&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: [], &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[lz-@]</td>
          <td class="col-duration">0.58</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;@&#x27;, city = &#x27;lz&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: [], &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[0931-]</td>
          <td class="col-duration">0.49</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;&#x27;, city = &#x27;0931&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[0931-aaaa]</td>
          <td class="col-duration">0.51</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">address = &#x27;aaaa&#x27;, city = &#x27;0931&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0, data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: [], &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_geocodeApi.py:67: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;geocodes&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[0931-@]</td>
          <td class="col-duration">1.40</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2517318E0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=0931&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=0931&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=0931 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>        super().connect()<br/>    <br/>        if self._tunnel_host:<br/>            server_hostname = self._tunnel_host<br/>        else:<br/>            server_hostname = self.host<br/>    <br/>&gt;       self.sock = self._context.wrap_socket(self.sock,<br/>                                              server_hostname=server_hostname)<br/><br/>C:\Python39\lib\http\client.py:1422: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLContext object at 0x000001A2514E17C0&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;, session = None<br/><br/>    def wrap_socket(self, sock, server_side=False,<br/>                    do_handshake_on_connect=True,<br/>                    suppress_ragged_eofs=True,<br/>                    server_hostname=None, session=None):<br/>        # SSLSocket class handles server_hostname encoding before it calls<br/>        # ctx._wrap_socket()<br/>&gt;       return self.sslsocket_class._create(<br/>            sock=sock,<br/>            server_side=server_side,<br/>            do_handshake_on_connect=do_handshake_on_connect,<br/>            suppress_ragged_eofs=suppress_ragged_eofs,<br/>            server_hostname=server_hostname,<br/>            context=self,<br/>            session=session<br/>        )<br/><br/>C:\Python39\lib\ssl.py:500: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>cls = &lt;class &#x27;ssl.SSLSocket&#x27;&gt;<br/>sock = &lt;socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True<br/>server_hostname = &#x27;restapi.amap.com&#x27;<br/>context = &lt;ssl.SSLContext object at 0x000001A2514E17C0&gt;, session = None<br/><br/>    @classmethod<br/>    def _create(cls, sock, server_side=False, do_handshake_on_connect=True,<br/>                suppress_ragged_eofs=True, server_hostname=None,<br/>                context=None, session=None):<br/>        if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM:<br/>            raise NotImplementedError(&quot;only stream sockets are supported&quot;)<br/>        if server_side:<br/>            if server_hostname:<br/>                raise ValueError(&quot;server_hostname can only be specified &quot;<br/>                                 &quot;in client mode&quot;)<br/>            if session is not None:<br/>                raise ValueError(&quot;session can only be specified in &quot;<br/>                                 &quot;client mode&quot;)<br/>        if context.check_hostname and not server_hostname:<br/>            raise ValueError(&quot;check_hostname requires server_hostname&quot;)<br/>    <br/>        kwargs = dict(<br/>            family=sock.family, type=sock.type, proto=sock.proto,<br/>            fileno=sock.fileno()<br/>        )<br/>        self = cls.__new__(cls, **kwargs)<br/>        super(SSLSocket, self).__init__(**kwargs)<br/>        self.settimeout(sock.gettimeout())<br/>        sock.detach()<br/>    <br/>        self._context = context<br/>        self._session = session<br/>        self._closed = False<br/>        self._sslobj = None<br/>        self.server_side = server_side<br/>        self.server_hostname = context._encode_hostname(server_hostname)<br/>        self.do_handshake_on_connect = do_handshake_on_connect<br/>        self.suppress_ragged_eofs = suppress_ragged_eofs<br/>    <br/>        # See if we are connected<br/>        try:<br/>            self.getpeername()<br/>        except OSError as e:<br/>            if e.errno != errno.ENOTCONN:<br/>                raise<br/>            connected = False<br/>        else:<br/>            connected = True<br/>    <br/>        self._connected = connected<br/>        if connected:<br/>            # create the SSL object<br/>            try:<br/>                self._sslobj = self._context._wrap_socket(<br/>                    self, server_side, self.server_hostname,<br/>                    owner=self, session=self._session,<br/>                )<br/>                if do_handshake_on_connect:<br/>                    timeout = self.gettimeout()<br/>                    if timeout == 0.0:<br/>                        # non-blocking<br/>                        raise ValueError(&quot;do_handshake_on_connect should not be specified for non-blocking sockets&quot;)<br/>&gt;                   self.do_handshake()<br/><br/>C:\Python39\lib\ssl.py:1040: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0&gt;<br/>block = False<br/><br/>    @_sslcopydoc<br/>    def do_handshake(self, block=False):<br/>        self._check_connected()<br/>        timeout = self.gettimeout()<br/>        try:<br/>            if timeout == 0.0 and block:<br/>                self.settimeout(None)<br/>&gt;           self._sslobj.do_handshake()<br/><span class="error">E           ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。</span><br/><br/>C:\Python39\lib\ssl.py:1309: ConnectionAbortedError<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;@&#x27;, city = &#x27;0931&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2517318E0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A251731D00&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [WinError 10053] 你的主机中的软件中止了一个已建立的连接。&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[620102-]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254955B20&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city=620102 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;&#x27;, city = &#x27;620102&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254955B20&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254955E50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[620102-aaaa]</td>
          <td class="col-duration">0.12</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254953880&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city=620102 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;aaaa&#x27;, city = &#x27;620102&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254953880&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254953A60&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[620102-@]</td>
          <td class="col-duration">0.12</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254952580&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=620102&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=620102 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;@&#x27;, city = &#x27;620102&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254952580&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952B50&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[-]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919C40&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=&amp;city= HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;&#x27;, city = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A254919C40&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254919790&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[-aaaa]</td>
          <td class="col-duration">0.11</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2549D4C70&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=aaaa&amp;city= HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;aaaa&#x27;, city = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2549D4C70&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254952580&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_geocodeApi.py::test_err_geocode[-@]</td>
          <td class="col-duration">0.10</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2540521C0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>&gt;               h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/><br/>C:\Python39\lib\urllib\request.py:1346: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/><br/>    def request(self, method, url, body=None, headers={}, *,<br/>                encode_chunked=False):<br/>        &quot;&quot;&quot;Send a complete request to the server.&quot;&quot;&quot;<br/>&gt;       self._send_request(method, url, body, headers, encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1253: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/>method = &#x27;GET&#x27;<br/>url = &#x27;/v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city=&#x27;<br/>body = None<br/>headers = {&#x27;Connection&#x27;: &#x27;close&#x27;, &#x27;Host&#x27;: &#x27;restapi.amap.com&#x27;, &#x27;User-Agent&#x27;: &#x27;Python-urllib/3.9&#x27;}<br/>encode_chunked = False<br/><br/>    def _send_request(self, method, url, body, headers, encode_chunked):<br/>        # Honor explicitly requested Host: and Accept-Encoding: headers.<br/>        header_names = frozenset(k.lower() for k in headers)<br/>        skips = {}<br/>        if &#x27;host&#x27; in header_names:<br/>            skips[&#x27;skip_host&#x27;] = 1<br/>        if &#x27;accept-encoding&#x27; in header_names:<br/>            skips[&#x27;skip_accept_encoding&#x27;] = 1<br/>    <br/>        self.putrequest(method, url, **skips)<br/>    <br/>        # chunked encoding will happen if HTTP/1.1 is used and either<br/>        # the caller passes encode_chunked=True or the following<br/>        # conditions hold:<br/>        # 1. content-length has not been explicitly set<br/>        # 2. the body is a file or iterable, but not a str or bytes-like<br/>        # 3. Transfer-Encoding has NOT been explicitly set by the caller<br/>    <br/>        if &#x27;content-length&#x27; not in header_names:<br/>            # only chunk body if not explicitly set for backwards<br/>            # compatibility, assuming the client code is already handling the<br/>            # chunking<br/>            if &#x27;transfer-encoding&#x27; not in header_names:<br/>                # if content-length cannot be automatically determined, fall<br/>                # back to chunked encoding<br/>                encode_chunked = False<br/>                content_length = self._get_content_length(body, method)<br/>                if content_length is None:<br/>                    if body is not None:<br/>                        if self.debuglevel &gt; 0:<br/>                            print(&#x27;Unable to determine size of %r&#x27; % body)<br/>                        encode_chunked = True<br/>                        self.putheader(&#x27;Transfer-Encoding&#x27;, &#x27;chunked&#x27;)<br/>                else:<br/>                    self.putheader(&#x27;Content-Length&#x27;, str(content_length))<br/>        else:<br/>            encode_chunked = False<br/>    <br/>        for hdr, value in headers.items():<br/>            self.putheader(hdr, value)<br/>        if isinstance(body, str):<br/>            # RFC 2616 Section 3.7.1 says that text default has a<br/>            # default charset of iso-8859-1.<br/>            body = _encode(body, &#x27;body&#x27;)<br/>&gt;       self.endheaders(body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1299: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/>message_body = None<br/><br/>    def endheaders(self, message_body=None, *, encode_chunked=False):<br/>        &quot;&quot;&quot;Indicate that the last header line has been sent to the server.<br/>    <br/>        This method sends the request to the server.  The optional message_body<br/>        argument can be used to pass a message body associated with the<br/>        request.<br/>        &quot;&quot;&quot;<br/>        if self.__state == _CS_REQ_STARTED:<br/>            self.__state = _CS_REQ_SENT<br/>        else:<br/>            raise CannotSendHeader()<br/>&gt;       self._send_output(message_body, encode_chunked=encode_chunked)<br/><br/>C:\Python39\lib\http\client.py:1248: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/>message_body = None, encode_chunked = False<br/><br/>    def _send_output(self, message_body=None, encode_chunked=False):<br/>        &quot;&quot;&quot;Send the currently buffered request and clear the buffer.<br/>    <br/>        Appends an extra \\r\\n to the buffer.<br/>        A message_body may be specified, to be appended to the request.<br/>        &quot;&quot;&quot;<br/>        self._buffer.extend((b&quot;&quot;, b&quot;&quot;))<br/>        msg = b&quot;\r\n&quot;.join(self._buffer)<br/>        del self._buffer[:]<br/>&gt;       self.send(msg)<br/><br/>C:\Python39\lib\http\client.py:1008: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/>data = b&#x27;GET /v3/geocode/geo?key=689bfca96107a49a90cef58c19122c6e&amp;output=JSON&amp;address=@&amp;city= HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: restapi.amap.com\r\nUser-Agent: Python-urllib/3.9\r\nConnection: close\r\n\r\n&#x27;<br/><br/>    def send(self, data):<br/>        &quot;&quot;&quot;Send `data&#x27; to the server.<br/>        ``data`` can be a string object, a bytes object, an array object, a<br/>        file-like object that supports a .read() method, or an iterable object.<br/>        &quot;&quot;&quot;<br/>    <br/>        if self.sock is None:<br/>            if self.auto_open:<br/>&gt;               self.connect()<br/><br/>C:\Python39\lib\http\client.py:948: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/><br/>    def connect(self):<br/>        &quot;Connect to a host on a given (SSL) port.&quot;<br/>    <br/>&gt;       super().connect()<br/><br/>C:\Python39\lib\http\client.py:1415: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/><br/>    def connect(self):<br/>        &quot;&quot;&quot;Connect to the host and port specified in __init__.&quot;&quot;&quot;<br/>&gt;       self.sock = self._create_connection(<br/>            (self.host,self.port), self.timeout, self.source_address)<br/><br/>C:\Python39\lib\http\client.py:919: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>address = (&#x27;restapi.amap.com&#x27;, 443)<br/>timeout = &lt;object object at 0x000001A251AEC640&gt;, source_address = None<br/><br/>    def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,<br/>                          source_address=None):<br/>        &quot;&quot;&quot;Connect to *address* and return the socket object.<br/>    <br/>        Convenience function.  Connect to *address* (a 2-tuple ``(host,<br/>        port)``) and return the socket object.  Passing the optional<br/>        *timeout* parameter will set the timeout on the socket instance<br/>        before attempting to connect.  If no *timeout* is supplied, the<br/>        global default timeout setting returned by :func:`getdefaulttimeout`<br/>        is used.  If *source_address* is set it must be a tuple of (host, port)<br/>        for the socket to bind as a source address before making the connection.<br/>        A host of &#x27;&#x27; or port 0 tells the OS to use the default.<br/>        &quot;&quot;&quot;<br/>    <br/>        host, port = address<br/>        err = None<br/>&gt;       for res in getaddrinfo(host, port, 0, SOCK_STREAM):<br/><br/>C:\Python39\lib\socket.py:822: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>host = &#x27;restapi.amap.com&#x27;, port = 443, family = 0<br/>type = &lt;SocketKind.SOCK_STREAM: 1&gt;, proto = 0, flags = 0<br/><br/>    def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):<br/>        &quot;&quot;&quot;Resolve host and port into list of address info entries.<br/>    <br/>        Translate the host/port argument into a sequence of 5-tuples that contain<br/>        all the necessary arguments for creating a socket connected to that service.<br/>        host is a domain name, a string representation of an IPv4/v6 address or<br/>        None. port is a string service name such as &#x27;http&#x27;, a numeric port number or<br/>        None. By passing None as the value of host and port, you can pass NULL to<br/>        the underlying C API.<br/>    <br/>        The family, type and proto arguments can be optionally specified in order to<br/>        narrow the list of addresses returned. Passing zero as a value for each of<br/>        these arguments selects the full range of results.<br/>        &quot;&quot;&quot;<br/>        # We override this function since we want to translate the numeric family<br/>        # and socket type values to enum constants.<br/>        addrlist = []<br/>&gt;       for res in _socket.getaddrinfo(host, port, family, type, proto, flags):<br/><span class="error">E       socket.gaierror: [Errno 11001] getaddrinfo failed</span><br/><br/>C:\Python39\lib\socket.py:953: gaierror<br/><br/>During handling of the above exception, another exception occurred:<br/><br/>address = &#x27;@&#x27;, city = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;address&#x27;, [&quot;&quot;, &quot;aaaa&quot;, &quot;@&quot;])<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;兰州市&quot;, &quot;lz&quot;, &quot;0931&quot;, &quot;620102&quot;, &quot;&quot;])<br/>    @pytest.mark.xfail<br/>    @pytest.mark.run(ord=10)<br/>    @pytest.mark.geocode<br/>    def test_err_geocode(address, city):<br/>        &quot;&quot;&quot;<br/>        测试高德的地理编码接口--反向测试:city为空和为非法值<br/>        :param address: 模糊地址--可能返回多个结果-测试取用第一个<br/>        :param city: 查询城市，可选：城市中文、中文全拼、citycode、adcode<br/>        :param Expectedvalue:<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;api_Geocoding&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;address=&quot; + address + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>&gt;       res: HTTPResponse = request.urlopen(req)<br/><br/>case\test_geocodeApi.py:64: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/>C:\Python39\lib\urllib\request.py:214: in urlopen<br/>    return opener.open(url, data, timeout)<br/>C:\Python39\lib\urllib\request.py:517: in open<br/>    response = self._open(req, data)<br/>C:\Python39\lib\urllib\request.py:534: in _open<br/>    result = self._call_chain(self.handle_open, protocol, protocol +<br/>C:\Python39\lib\urllib\request.py:494: in _call_chain<br/>    result = func(*args)<br/>C:\Python39\lib\urllib\request.py:1389: in https_open<br/>    return self.do_open(http.client.HTTPSConnection, req,<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br/><br/>self = &lt;urllib.request.HTTPSHandler object at 0x000001A253FA9A00&gt;<br/>http_class = &lt;class &#x27;http.client.HTTPSConnection&#x27;&gt;<br/>req = &lt;urllib.request.Request object at 0x000001A2540521C0&gt;<br/>http_conn_args = {&#x27;check_hostname&#x27;: None, &#x27;context&#x27;: None}<br/>host = &#x27;restapi.amap.com&#x27;<br/>h = &lt;http.client.HTTPSConnection object at 0x000001A254052610&gt;<br/><br/>    def do_open(self, http_class, req, **http_conn_args):<br/>        &quot;&quot;&quot;Return an HTTPResponse object for the request, using http_class.<br/>    <br/>        http_class must implement the HTTPConnection API from http.client.<br/>        &quot;&quot;&quot;<br/>        host = req.host<br/>        if not host:<br/>            raise URLError(&#x27;no host given&#x27;)<br/>    <br/>        # will parse host:port<br/>        h = http_class(host, timeout=req.timeout, **http_conn_args)<br/>        h.set_debuglevel(self._debuglevel)<br/>    <br/>        headers = dict(req.unredirected_hdrs)<br/>        headers.update({k: v for k, v in req.headers.items()<br/>                        if k not in headers})<br/>    <br/>        # TODO(jhylton): Should this be redesigned to handle<br/>        # persistent connections?<br/>    <br/>        # We want to make an HTTP/1.1 request, but the addinfourl<br/>        # class isn&#x27;t prepared to deal with a persistent connection.<br/>        # It will try to read all remaining data from the socket,<br/>        # which will block while the server waits for the next request.<br/>        # So make sure the connection gets closed after the (only)<br/>        # request.<br/>        headers[&quot;Connection&quot;] = &quot;close&quot;<br/>        headers = {name.title(): val for name, val in headers.items()}<br/>    <br/>        if req._tunnel_host:<br/>            tunnel_headers = {}<br/>            proxy_auth_hdr = &quot;Proxy-Authorization&quot;<br/>            if proxy_auth_hdr in headers:<br/>                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]<br/>                # Proxy-Authorization should not be sent to origin<br/>                # server.<br/>                del headers[proxy_auth_hdr]<br/>            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)<br/>    <br/>        try:<br/>            try:<br/>                h.request(req.get_method(), req.selector, req.data, headers,<br/>                          encode_chunked=req.has_header(&#x27;Transfer-encoding&#x27;))<br/>            except OSError as err: # timeout error<br/>&gt;               raise URLError(err)<br/><span class="error">E               urllib.error.URLError: &lt;urlopen error [Errno 11001] getaddrinfo failed&gt;</span><br/><br/>C:\Python39\lib\urllib\request.py:1349: URLError<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case2[-6]</td>
          <td class="col-duration">0.47</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 6, ip = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [6])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;&quot;, &quot;汉字&quot;, &quot;210.26.49.10&quot;, &quot;M&quot;, &quot;@&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case2(type, ip):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ipv6下ip地址不合法且不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;缺少必填参数（ip），请补充完整&#x27;, &#x27;infocode&#x27;: &#x27;20001&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:107: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;缺少必填参数（ip），请补充完整&#x27;, &#x27;infocode&#x27;: &#x27;20001&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case2[汉字-6]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 6, ip = &#x27;汉字&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [6])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;&quot;, &quot;汉字&quot;, &quot;210.26.49.10&quot;, &quot;M&quot;, &quot;@&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case2(type, ip):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ipv6下ip地址不合法且不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:107: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case2[210.26.49.10-6]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 6, ip = &#x27;210.26.49.10&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [6])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;&quot;, &quot;汉字&quot;, &quot;210.26.49.10&quot;, &quot;M&quot;, &quot;@&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case2(type, ip):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ipv6下ip地址不合法且不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:107: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case2[M-6]</td>
          <td class="col-duration">0.49</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 6, ip = &#x27;M&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [6])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;&quot;, &quot;汉字&quot;, &quot;210.26.49.10&quot;, &quot;M&quot;, &quot;@&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case2(type, ip):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ipv6下ip地址不合法且不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:107: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case2[@-6]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 6, ip = &#x27;@&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [6])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;&quot;, &quot;汉字&quot;, &quot;210.26.49.10&quot;, &quot;M&quot;, &quot;@&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case2(type, ip):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ipv6下ip地址不合法且不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:107: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;未知错误，请联系高德地图开放平台技术支持&#x27;, &#x27;infocode&#x27;: &#x27;20003&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[52.2.222.5-]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;52.2.222.5&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[52.2.222.5-0]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;52.2.222.5&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[52.2.222.5-3]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;52.2.222.5&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[52.2.222.5-5]</td>
          <td class="col-duration">0.63</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;52.2.222.5&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[52.2.222.5-*]</td>
          <td class="col-duration">2.31</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;52.2.222.5&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10-]</td>
          <td class="col-duration">1.03</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.10&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10-0]</td>
          <td class="col-duration">0.56</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.10&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10-3]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.10&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10-5]</td>
          <td class="col-duration">0.47</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.10&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10-*]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.10&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[114.247.50.2-]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;114.247.50.2&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[114.247.50.2-0]</td>
          <td class="col-duration">0.61</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;114.247.50.2&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[114.247.50.2-3]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;114.247.50.2&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[114.247.50.2-5]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;114.247.50.2&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[114.247.50.2-*]</td>
          <td class="col-duration">0.54</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;114.247.50.2&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[2400:da00::dbf:0:100-]</td>
          <td class="col-duration">0.59</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;2400:da00::dbf:0:100&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[2400:da00::dbf:0:100-0]</td>
          <td class="col-duration">0.38</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;2400:da00::dbf:0:100&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[2400:da00::dbf:0:100-3]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;2400:da00::dbf:0:100&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[2400:da00::dbf:0:100-5]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;2400:da00::dbf:0:100&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[2400:da00::dbf:0:100-*]</td>
          <td class="col-duration">0.69</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;2400:da00::dbf:0:100&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.-]</td>
          <td class="col-duration">0.76</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.-0]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.-3]</td>
          <td class="col-duration">0.62</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.-5]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.-*]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.-]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.-0]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.-3]</td>
          <td class="col-duration">0.36</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.-5]</td>
          <td class="col-duration">0.71</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.-*]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-0]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-3]</td>
          <td class="col-duration">0.43</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-5]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-*]</td>
          <td class="col-duration">0.78</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.x-]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.x&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.x-0]</td>
          <td class="col-duration">0.43</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.x&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.x-3]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.x&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.x-5]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.x&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.x-*]</td>
          <td class="col-duration">1.73</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.x&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.2777-]</td>
          <td class="col-duration">0.43</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.2777&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.2777-0]</td>
          <td class="col-duration">0.73</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.2777&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.2777-3]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.2777&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.2777-5]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.2777&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.2777-*]</td>
          <td class="col-duration">0.38</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.2777&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-1-]</td>
          <td class="col-duration">0.66</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.-1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-1-0]</td>
          <td class="col-duration">0.55</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.-1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-1-3]</td>
          <td class="col-duration">0.43</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.-1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-1-5]</td>
          <td class="col-duration">0.64</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.-1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.-1-*]</td>
          <td class="col-duration">0.49</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.-1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10.1-]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;&#x27;, ip = &#x27;210.26.49.10.1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10.1-0]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 0, ip = &#x27;210.26.49.10.1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10.1-3]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 3, ip = &#x27;210.26.49.10.1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10.1-5]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = 5, ip = &#x27;210.26.49.10.1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case3[210.26.49.10.1-*]</td>
          <td class="col-duration">0.62</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">type = &#x27;*&#x27;, ip = &#x27;210.26.49.10.1&#x27;, output = &#x27;JSON&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&quot;type&quot;, [&quot;&quot;, 0, 3, 5, &quot;*&quot;])<br/>    @pytest.mark.parametrize(&quot;ip&quot;, [&quot;52.2.222.5&quot;, &quot;210.26.49.10&quot;, &quot;114.247.50.2&quot;, &quot;2400:da00::dbf:0:100&quot;, &quot;210.&quot;, &quot;210.26.&quot;,<br/>                                    &quot;210.26.49.&quot;, &quot;210.26.49.x&quot;, &quot;210.26.49.2777&quot;, &quot;210.26.49.-1&quot;, &quot;210.26.49.10.1&quot;])<br/>    @pytest.mark.ip2<br/>    @pytest.mark.xfail<br/>    def test_ip20_err_case3(type, ip, output=&quot;JSON&quot;):<br/>        &quot;&quot;&quot;<br/>        高德ip定位2.0测试-反向用例-ip地址符号量规范,type不符合规范<br/>        :param ip<br/>        :return<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;ip2.0&quot;] + &quot;key=%s&amp;output=JSON&amp;ip=%s&amp;type=%s&quot; % (key, str(ip), str(type))<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &quot;1&quot; and data[&quot;info&quot;] == &quot;OK&quot; and data[&quot;infocode&quot;] == &quot;10000&quot;, data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;, &#x27;status&#x27;: &#x27;20003&#x27;}</span><br/><span class="error">E       assert (&#x27;20003&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 20003)</span><br/><br/>case\test_ip2.py:132: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;20003&#x27;, &#x27;info&#x27;: &#x27;UNKNOWN_ERROR&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[801]</td>
          <td class="col-duration">0.75</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">city = &#x27;801&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;801&quot;, &quot;lz&quot;, &quot;&quot;,&quot;@#$&quot;, &quot;非地区名称&quot;, &quot;扶沟县&quot;, &quot;兰州市&quot;])<br/>    @pytest.mark.weather<br/>    @pytest.mark.run(ord=1)<br/>    @pytest.mark.xfail<br/>    def test_err_weather(city):<br/>        &quot;&quot;&quot;<br/>        测试高德的天气查询接口--反向测试:<br/>        :param city: 城市的adcode(区域编码)<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;weather&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0 and len(data[&quot;lives&quot;][0]), data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [[]], ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 1 &gt; 0 and 0)</span><br/><span class="error">E        +  where 1 = int(&#x27;1&#x27;)</span><br/><span class="error">E        +  and   0 = len([])</span><br/><br/>case\test_weather.py:62: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [[]]}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[lz]</td>
          <td class="col-duration">0.73</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">city = &#x27;lz&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;801&quot;, &quot;lz&quot;, &quot;&quot;,&quot;@#$&quot;, &quot;非地区名称&quot;, &quot;扶沟县&quot;, &quot;兰州市&quot;])<br/>    @pytest.mark.weather<br/>    @pytest.mark.run(ord=1)<br/>    @pytest.mark.xfail<br/>    def test_err_weather(city):<br/>        &quot;&quot;&quot;<br/>        测试高德的天气查询接口--反向测试:<br/>        :param city: 城市的adcode(区域编码)<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;weather&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0 and len(data[&quot;lives&quot;][0]), data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [], ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_weather.py:62: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[]</td>
          <td class="col-duration">0.81</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">city = &#x27;&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;801&quot;, &quot;lz&quot;, &quot;&quot;,&quot;@#$&quot;, &quot;非地区名称&quot;, &quot;扶沟县&quot;, &quot;兰州市&quot;])<br/>    @pytest.mark.weather<br/>    @pytest.mark.run(ord=1)<br/>    @pytest.mark.xfail<br/>    def test_err_weather(city):<br/>        &quot;&quot;&quot;<br/>        测试高德的天气查询接口--反向测试:<br/>        :param city: 城市的adcode(区域编码)<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;weather&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0 and len(data[&quot;lives&quot;][0]), data<br/><span class="error">E       AssertionError: {&#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;, &#x27;status&#x27;: &#x27;0&#x27;}</span><br/><span class="error">E       assert (&#x27;0&#x27; == &#x27;1&#x27;</span><br/><span class="error">E         - 1</span><br/><span class="error">E         + 0)</span><br/><br/>case\test_weather.py:62: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[@#$]</td>
          <td class="col-duration">0.71</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">city = &#x27;@#$&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;801&quot;, &quot;lz&quot;, &quot;&quot;,&quot;@#$&quot;, &quot;非地区名称&quot;, &quot;扶沟县&quot;, &quot;兰州市&quot;])<br/>    @pytest.mark.weather<br/>    @pytest.mark.run(ord=1)<br/>    @pytest.mark.xfail<br/>    def test_err_weather(city):<br/>        &quot;&quot;&quot;<br/>        测试高德的天气查询接口--反向测试:<br/>        :param city: 城市的adcode(区域编码)<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;weather&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0 and len(data[&quot;lives&quot;][0]), data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [], ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_weather.py:62: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xfailed results-table-row">
        <tr>
          <td class="col-result">XFailed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[非地区名称]</td>
          <td class="col-duration">0.51</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log">city = &#x27;非地区名称&#x27;<br/><br/>    @pytest.mark.usefixtures(&quot;DelayaccessFixture&quot;)<br/>    @pytest.mark.parametrize(&#x27;city&#x27;, [&quot;801&quot;, &quot;lz&quot;, &quot;&quot;,&quot;@#$&quot;, &quot;非地区名称&quot;, &quot;扶沟县&quot;, &quot;兰州市&quot;])<br/>    @pytest.mark.weather<br/>    @pytest.mark.run(ord=1)<br/>    @pytest.mark.xfail<br/>    def test_err_weather(city):<br/>        &quot;&quot;&quot;<br/>        测试高德的天气查询接口--反向测试:<br/>        :param city: 城市的adcode(区域编码)<br/>        :return:<br/>        &quot;&quot;&quot;<br/>        url = urls[&quot;weather&quot;] + &quot;key=&quot; + key + &quot;&amp;output=JSON&quot; + &quot;&amp;city=&quot; + city<br/>        url = quote(url, safe=string.printable)<br/>        req = request.Request(url)<br/>        res: HTTPResponse = request.urlopen(req)<br/>        data = json.loads(res.read())<br/>        print(data)<br/>&gt;       assert data[&quot;status&quot;] == &#x27;1&#x27; and data[&quot;info&quot;] == &quot;OK&quot; and int(data[&quot;count&quot;]) &gt; 0 and len(data[&quot;lives&quot;][0]), data<br/><span class="error">E       AssertionError: {&#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [], ...}</span><br/><span class="error">E       assert (&#x27;1&#x27; == &#x27;1&#x27;</span><br/><span class="error">E           1 and &#x27;OK&#x27; == &#x27;OK&#x27;</span><br/><span class="error">E           OK and 0 &gt; 0)</span><br/><span class="error">E        +  where 0 = int(&#x27;0&#x27;)</span><br/><br/>case\test_weather.py:62: AssertionError<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: []}
<br/></div></td></tr></tbody>
      <tbody class="xpassed results-table-row">
        <tr>
          <td class="col-result">XPassed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[扶沟县]</td>
          <td class="col-duration">0.80</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [{&#x27;province&#x27;: &#x27;河南&#x27;, &#x27;city&#x27;: &#x27;扶沟县&#x27;, &#x27;adcode&#x27;: &#x27;411621&#x27;, &#x27;weather&#x27;: &#x27;晴&#x27;, &#x27;temperature&#x27;: &#x27;2&#x27;, &#x27;winddirection&#x27;: &#x27;西北&#x27;, &#x27;windpower&#x27;: &#x27;≤3&#x27;, &#x27;humidity&#x27;: &#x27;28&#x27;, &#x27;reporttime&#x27;: &#x27;2021-11-22 08:30:20&#x27;}]}
<br/></div></td></tr></tbody>
      <tbody class="xpassed results-table-row">
        <tr>
          <td class="col-result">XPassed</td>
          <td class="col-name">case/test_weather.py::test_err_weather[兰州市]</td>
          <td class="col-duration">0.65</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;count&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;lives&#x27;: [{&#x27;province&#x27;: &#x27;甘肃&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;adcode&#x27;: &#x27;620100&#x27;, &#x27;weather&#x27;: &#x27;晴&#x27;, &#x27;temperature&#x27;: &#x27;-7&#x27;, &#x27;winddirection&#x27;: &#x27;东&#x27;, &#x27;windpower&#x27;: &#x27;≤3&#x27;, &#x27;humidity&#x27;: &#x27;61&#x27;, &#x27;reporttime&#x27;: &#x27;2021-11-22 08:07:21&#x27;}]}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_DevKey.py::test_right_Key[689bfca96107a49a90cef58c19122c6e-https://restapi.amap.com/v3/geocode/geo?]</td>
          <td class="col-duration">2.17</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -----------------------------Captured stdout setup------------------------------ <br/>网络连接正常
接口调用速度为10符合要求
环境检查通过!
<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;MISSING_REQUIRED_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20001&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_DevKey.py::test_right_Key[689bfca96107a49a90cef58c19122c6e-https://restapi.amap.com/v3/geocode/regeo?]</td>
          <td class="col-duration">1.67</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_DevKey.py::test_right_Key[689bfca96107a49a90cef58c19122c6e-https://restapi.amap.com/v5/ip?]</td>
          <td class="col-duration">2.38</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;请求参数（type）非法，请参照接口开发文档进行调整&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_DevKey.py::test_right_Key[689bfca96107a49a90cef58c19122c6e-https://restapi.amap.com/v3/weather/weatherInfo?]</td>
          <td class="col-duration">1.93</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;INVALID_PARAMS&#x27;, &#x27;infocode&#x27;: &#x27;20000&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_Regeo.py::test_right_rego[116.481488,39.990464]</td>
          <td class="col-duration">0.56</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -----------------------------Captured stdout setup------------------------------ <br/>网络连接正常
接口调用速度为10符合要求
环境检查通过!
<br/> ------------------------------Captured stdout call------------------------------ <br/>北京市朝阳区望京街道方恒国际中心B座
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_Regeo.py::test_right_rego[103.841032,36.049115]</td>
          <td class="col-duration">0.39</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>甘肃省兰州市城关区皋兰路街道皋兰路106号嘉诚大厦
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.71</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -----------------------------Captured stdout setup------------------------------ <br/>网络连接正常
接口调用速度为10符合要求
环境检查通过!
<br/> ------------------------------Captured stdout call------------------------------ <br/>103.857658,36.045806
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[兰州市-兰州西站]</td>
          <td class="col-duration">0.51</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.752244,36.069001
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[兰州市-兰州大学(榆中校区)]</td>
          <td class="col-duration">0.53</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>104.155902,35.942617
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[lz-城关区兰州大学]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.857658,36.045806
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[lz-兰州西站]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.752244,36.069001
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[lz-兰州大学(榆中校区)]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>104.155902,35.942617
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[0931-城关区兰州大学]</td>
          <td class="col-duration">0.50</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.857658,36.045806
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[0931-兰州西站]</td>
          <td class="col-duration">0.40</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.752244,36.069001
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[0931-兰州大学(榆中校区)]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>104.155902,35.942617
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[620102-城关区兰州大学]</td>
          <td class="col-duration">0.66</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.857658,36.045806
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[620102-兰州西站]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.752244,36.069001
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[620102-兰州大学(榆中校区)]</td>
          <td class="col-duration">0.54</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>104.155902,35.942617
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[-城关区兰州大学]</td>
          <td class="col-duration">0.56</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.857658,36.045806
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[-兰州西站]</td>
          <td class="col-duration">0.64</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>103.752244,36.069001
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_right_geocode[-兰州大学(榆中校区)]</td>
          <td class="col-duration">0.56</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>104.155902,35.942617
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[10-false-兰州市-兰州西站]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>1
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[11-true-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>10
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[11-true-兰州市-兰州西站]</td>
          <td class="col-duration">0.51</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>10
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[11-false-兰州市-城关区兰州大学]</td>
          <td class="col-duration">0.50</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>1
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_geocodeApi.py::test_batch_geocode[11-false-兰州市-兰州西站]</td>
          <td class="col-duration">0.77</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>1
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case1[params0]</td>
          <td class="col-duration">0.64</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -----------------------------Captured stdout setup------------------------------ <br/>网络连接正常
接口调用速度为10符合要求
环境检查通过!
<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;北京市&#x27;, &#x27;city&#x27;: &#x27;北京市&#x27;, &#x27;district&#x27;: &#x27;朝阳区&#x27;, &#x27;isp&#x27;: &#x27;中国联通&#x27;, &#x27;location&#x27;: &#x27;116.486409,39.921489&#x27;, &#x27;ip&#x27;: &#x27;114.247.50.2&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case1[params1]</td>
          <td class="col-duration">0.42</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;城关区&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.841032,36.049115&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.10&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case1[params2]</td>
          <td class="col-duration">0.54</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;美国&#x27;, &#x27;province&#x27;: &#x27;&#x27;, &#x27;city&#x27;: &#x27;&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;亚马逊&#x27;, &#x27;location&#x27;: &#x27;-95.712771,37.090361&#x27;, &#x27;ip&#x27;: &#x27;52.2.222.5&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case1[params3]</td>
          <td class="col-duration">0.40</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;河南省&#x27;, &#x27;city&#x27;: &#x27;南阳市&#x27;, &#x27;district&#x27;: &#x27;宛城区&#x27;, &#x27;isp&#x27;: &#x27;百度&#x27;, &#x27;location&#x27;: &#x27;112.544591,32.994857&#x27;, &#x27;ip&#x27;: &#x27;2400:da00::dbf:0:100&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;香港特别行政区&#x27;, &#x27;city&#x27;: &#x27;新界&#x27;, &#x27;district&#x27;: &#x27;葵青区&#x27;, &#x27;isp&#x27;: &#x27;和记电讯&#x27;, &#x27;location&#x27;: &#x27;114.13918,22.363908&#x27;, &#x27;ip&#x27;: &#x27;210.&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.]</td>
          <td class="col-duration">0.78</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.823557,36.058039&#x27;, &#x27;ip&#x27;: &#x27;210.26.&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.49.]</td>
          <td class="col-duration">0.57</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;城关区&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.841032,36.049115&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.49.x]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;城关区&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.841032,36.049115&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.x&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.49.2777]</td>
          <td class="col-duration">0.61</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;城关区&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.841032,36.049115&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.2777&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.49.-1]</td>
          <td class="col-duration">0.46</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;甘肃省&#x27;, &#x27;city&#x27;: &#x27;兰州市&#x27;, &#x27;district&#x27;: &#x27;城关区&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;103.841032,36.049115&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.-1&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_right_case2[4-210.26.49.10.1]</td>
          <td class="col-duration">0.45</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;中国&#x27;, &#x27;province&#x27;: &#x27;新疆维吾尔自治区&#x27;, &#x27;city&#x27;: &#x27;巴音郭楞蒙古自治州&#x27;, &#x27;district&#x27;: &#x27;库尔勒市&#x27;, &#x27;isp&#x27;: &#x27;中国教育网&#x27;, &#x27;location&#x27;: &#x27;86.145948,41.763122&#x27;, &#x27;ip&#x27;: &#x27;210.26.49.10.1&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case1[-4]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;0&#x27;, &#x27;info&#x27;: &#x27;缺少必填参数（ip），请补充完整&#x27;, &#x27;infocode&#x27;: &#x27;20001&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case1[汉字-4]</td>
          <td class="col-duration">0.57</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;保留地址&#x27;, &#x27;province&#x27;: &#x27;&#x27;, &#x27;city&#x27;: &#x27;&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;&#x27;, &#x27;location&#x27;: &#x27;,&#x27;, &#x27;ip&#x27;: &#x27;汉字&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case1[2400:da00::dbf:0:100-4]</td>
          <td class="col-duration">0.41</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;保留地址&#x27;, &#x27;province&#x27;: &#x27;&#x27;, &#x27;city&#x27;: &#x27;&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;&#x27;, &#x27;location&#x27;: &#x27;,&#x27;, &#x27;ip&#x27;: &#x27;2400:da00::dbf:0:100&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case1[M-4]</td>
          <td class="col-duration">0.44</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;保留地址&#x27;, &#x27;province&#x27;: &#x27;&#x27;, &#x27;city&#x27;: &#x27;&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;&#x27;, &#x27;location&#x27;: &#x27;,&#x27;, &#x27;ip&#x27;: &#x27;M&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_err_case1[@-4]</td>
          <td class="col-duration">0.55</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;status&#x27;: &#x27;1&#x27;, &#x27;info&#x27;: &#x27;OK&#x27;, &#x27;infocode&#x27;: &#x27;10000&#x27;, &#x27;country&#x27;: &#x27;保留地址&#x27;, &#x27;province&#x27;: &#x27;&#x27;, &#x27;city&#x27;: &#x27;&#x27;, &#x27;district&#x27;: &#x27;&#x27;, &#x27;isp&#x27;: &#x27;&#x27;, &#x27;location&#x27;: &#x27;,&#x27;, &#x27;ip&#x27;: &#x27;@&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_ip10_case1[114.247.50.2]</td>
          <td class="col-duration">1.06</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&quot;status&quot;:&quot;1&quot;,&quot;info&quot;:&quot;OK&quot;,&quot;infocode&quot;:&quot;10000&quot;,&quot;country&quot;:&quot;中国&quot;,&quot;province&quot;:&quot;北京市&quot;,&quot;city&quot;:&quot;北京市&quot;,&quot;district&quot;:&quot;朝阳区&quot;,&quot;isp&quot;:&quot;中国联通&quot;,&quot;location&quot;:&quot;116.486409,39.921489&quot;,&quot;ip&quot;:&quot;114.247.50.2&quot;}
{&quot;status&quot;:&quot;1&quot;,&quot;info&quot;:&quot;OK&quot;,&quot;infocode&quot;:&quot;10000&quot;,&quot;country&quot;:&quot;中国&quot;,&quot;province&quot;:&quot;北京市&quot;,&quot;city&quot;:&quot;北京市&quot;,&quot;district&quot;:&quot;朝阳区&quot;,&quot;isp&quot;:&quot;中国联通&quot;,&quot;location&quot;:&quot;116.486409,39.921489&quot;,&quot;ip&quot;:&quot;114.247.50.2&quot;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_ip2.py::test_ip20_ip10_case1[210.26.49.10]</td>
          <td class="col-duration">1.87</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&quot;status&quot;:&quot;1&quot;,&quot;info&quot;:&quot;OK&quot;,&quot;infocode&quot;:&quot;10000&quot;,&quot;country&quot;:&quot;中国&quot;,&quot;province&quot;:&quot;甘肃省&quot;,&quot;city&quot;:&quot;兰州市&quot;,&quot;district&quot;:&quot;城关区&quot;,&quot;isp&quot;:&quot;中国教育网&quot;,&quot;location&quot;:&quot;103.841032,36.049115&quot;,&quot;ip&quot;:&quot;210.26.49.10&quot;}
{&quot;status&quot;:&quot;1&quot;,&quot;info&quot;:&quot;OK&quot;,&quot;infocode&quot;:&quot;10000&quot;,&quot;country&quot;:&quot;中国&quot;,&quot;province&quot;:&quot;甘肃省&quot;,&quot;city&quot;:&quot;兰州市&quot;,&quot;district&quot;:&quot;城关区&quot;,&quot;isp&quot;:&quot;中国教育网&quot;,&quot;location&quot;:&quot;103.841032,36.049115&quot;,&quot;ip&quot;:&quot;210.26.49.10&quot;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_weather.py::test_right_weather[620102]</td>
          <td class="col-duration">3.21</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -----------------------------Captured stdout setup------------------------------ <br/>网络连接正常
接口调用速度为10符合要求
环境检查通过!
<br/> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;province&#x27;: &#x27;甘肃&#x27;, &#x27;city&#x27;: &#x27;城关区&#x27;, &#x27;adcode&#x27;: &#x27;620102&#x27;, &#x27;weather&#x27;: &#x27;晴&#x27;, &#x27;temperature&#x27;: &#x27;-7&#x27;, &#x27;winddirection&#x27;: &#x27;东&#x27;, &#x27;windpower&#x27;: &#x27;≤3&#x27;, &#x27;humidity&#x27;: &#x27;61&#x27;, &#x27;reporttime&#x27;: &#x27;2021-11-22 08:07:22&#x27;}
<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">case/test_weather.py::test_right_weather[411621]</td>
          <td class="col-duration">0.48</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> ------------------------------Captured stdout call------------------------------ <br/>{&#x27;province&#x27;: &#x27;河南&#x27;, &#x27;city&#x27;: &#x27;扶沟县&#x27;, &#x27;adcode&#x27;: &#x27;411621&#x27;, &#x27;weather&#x27;: &#x27;晴&#x27;, &#x27;temperature&#x27;: &#x27;2&#x27;, &#x27;winddirection&#x27;: &#x27;西北&#x27;, &#x27;windpower&#x27;: &#x27;≤3&#x27;, &#x27;humidity&#x27;: &#x27;28&#x27;, &#x27;reporttime&#x27;: &#x27;2021-11-22 08:30:20&#x27;}
<br/></div></td></tr></tbody></table></body></html>